package com.mycompany.delivery.dao.hibernate;
//comentario2
import java.util.List;

import com.mycompany.delivery.dao.EmpleadoDao;
import com.mycompany.delivery.model.Empleado;

import org.hibernate.Hibernate;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.stereotype.Repository;

@Repository
@SuppressWarnings(value = "unchecked")
public class EmpleadoDaoHibernate extends HibernateDaoSupport implements
        EmpleadoDao {

    @Autowired
    public EmpleadoDaoHibernate(SessionFactory sessionFactory){
        setSessionFactory(sessionFactory);
    }

    @Override
    public void guardarEmpleado(Empleado empleado) {
        getHibernateTemplate().save(empleado);
        //Se puede resumir indicando SaveOrUpdate
    }

    @Override
    public void actualizarEmpleado(Empleado empleado) {
        getHibernateTemplate().update(empleado);
    }

    @Override
    public void eliminarEmpleado(Integer idEmpleado) {
        Empleado empleado = obtenerEmpleadoById(idEmpleado);
        getHibernateTemplate().delete(empleado);
    }

    @Override
    public List<Empleado> obtenerListaEmpleados(Empleado empleado) {

        StringBuilder query = new StringBuilder("from empleado e ");

        if (empleado.getNombre() != null
                && !empleado.getNombre().isEmpty()){
        query.append(" where NOMBRE like '%").append(empleado.getNombre()).append("%'");
        }

        List<Empleado> list = getHibernateTemplate().find(query.toString());
        return list;
    }

    @Override
    public Empleado obtenerEmpleadoById(Integer idEmpleado) {
        Empleado empleado = getHibernateTemplate().get(Empleado.class, idEmpleado);
        return empleado;
    }

}
